import { Body, Controller, Post } from '@nestjs/common';
import { AppAuthService } from './auth.service';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiRes } from 'src/common/decorator/api-res.decorator';
import { Public } from 'src/common/decorator/public.decorator';
import { LoginResDto, SupabaseLoginDto } from './dto/login.dot';
import { JwtService } from '@nestjs/jwt';

@ApiTags('app登录模块')
@Controller('/app/auth')
export default class AppAuthController {
  constructor(
    private readonly authService: AppAuthService,
    private readonly jwtService: JwtService,
  ) {}

  // @Post('/login')
  // @ApiOperation({
  //   summary: '登录',
  // })
  // @ApiStringRes()
  // @Public()
  // login(@Body() emailPasswordLoginDto: EmailLoginDto) {
  //   return this.authService.emailPasswordLogin(emailPasswordLoginDto);
  // }

  @Post('/login/supabase')
  @ApiOperation({
    summary: '登录, 使用supabase的token登录',
  })
  @ApiRes(LoginResDto)
  @Public()
  async login(@Body() data: SupabaseLoginDto) {
    return {
      data: {
        token: await this.authService.supabaseLogin(data.token),
      },
    };
  }

  // register(@Body() data: SupabaseLoginDto) {
  // return this.authService.supabaseLogin(data.userId);

  //   return {
  //     data: null,
  //   };
  // }

  // @Post('/register')
  // @ApiOperation({
  //   summary: '登录',
  // })
  // @ApiRes()
  // @Public()
  // register(@Body() data: RegisterDto) {
  //   return this.authService.register(data.userId);
  // }
  @Post('/test-token')
  @Public()
  @ApiOperation({
    summary: '测试token',
  })
  test(@Body() data: SupabaseLoginDto) {
    return {
      data: {
        verify: this.jwtService.verify(data.token),
        decode: this.jwtService.decode(data.token),
      },
    };
  }
}
